「Snowflakeをより使いこなそう! Advent Calendar 2021」で執筆した記事まとめ #SnowflakeDB
※本エントリは、Snowflakeをより使いこなそう! Advent Calendar 2021の25日目の記事となります。
さがらです。
私が1人で取り組んできたアドベントカレンダー、Snowflakeをより使いこなそう! Advent Calendar 2021に関するまとめ記事となります。
Snowflakeをより使いこなそう! Advent Calendar 2021とは
クラスメソッドの1社員である私さがらが、Snowflakeに関する機能を色々試してみた記事を投稿するアドベントカレンダーでした。
大きく、以下の4つに分類される記事を書きました。
- ドキュメントをパッと見ただけではわからない細かな仕様
- 個人的に「これは使えそう、業務でも活きそう」と感じた知識や機能
- 最新機能
- dbtとの連携
書いた記事の振り返り
このまとめ記事を除き、24本Snowflakeに関する記事を書いてきました。どんな記事を書いたのか振り返りながらまとめていきたいと思います。
ドキュメントをパッと見ただけではわからない細かな仕様
ストリームやタイムトラベルなどの知識は得ていたのですが、「あれ、この機能に対してこの操作をするとどうなるんだ?」と気になっていた内容を実際に試してみて、記事として書き起こしたものです。
個人的には、「タイムトラベルの設定で上位オブジェクトで設定された値は下位オブジェクトにどう影響するか確かめてみた」での検証が、予想外の結果となり面白かったですね!
- Snowflakeのストリームはどの操作によりレコードが消えるか確かめてみた
- SnowflakeのSecure Viewを試してみた
- Snowflakeのアンロードで単一ファイルと複数ファイルを比較してみた
- タイムトラベルの設定で上位オブジェクトで設定された値は下位オブジェクトにどう影響するか確かめてみた
個人的に「これは使えそう、業務でも活きそう」と感じた知識や機能
Snowflakeを使う上で、「まとめられていると業務に役に立ちそう」と私が個人的に感じていた所を改めてまとめてみた記事になります。
GET_OBJECT_REFERENCES
やGENERATOR
など知っているかどうかで利便性が変わってくる便利関数を始めとし、使い時になって初めて調べる各種関数などについて書いてみました。一番参考にするのは私自身かもしれません。笑
- Snowflakeのタイムトラベル関連でよく使いそうなコマンドを試してみた
- Snowflakeでviewが何から作られているかを知るGET_OBJECT_REFERENCESを試してみた
- Snowflakeでテストデータの生成に便利なGENERATORを試してみた
- Snowflakeのサンプルデータを一通り見てみる
- Snowflakeのコストを概算してみよう
- Snowflakeのコスト確認方法をまとめてみる
- ACCOUNTADMINを2人用意してPW紛失時の対応をシミュレートしてみた
- Snowflakeで知っていると便利なシステム関数についてまとめてみた~制御機能編~
- Snowflakeで知っていると便利なシステム関数についてまとめてみた~情報関数編~
- Snowflakeで知っていると便利なコンテキスト関数についてまとめてみた
- Snowflakeで日付と時刻の関数を試してみた~構築・抽出編~
- Snowflakeで日付と時刻の関数を試してみた~加算減算・切り捨て編~
最新機能
最新機能と分類したものの、これは1記事しか書かなかったですね…
しかし、1つだけ試したサーバーレスタスクは運用負荷も課金も削減でき、本当にユーザーフレンドリーな良い機能だと感じています。2021年12月24日時点ではプレビュー機能ですが、ぜひ皆さんにも試して頂きたい機能ですね!
dbtとの連携
最後の4分類目が、dbtとの連携ですね。dbtはDWH上でのTransformに用いるツールですが、Transformに必要な要素を漏れなく整えています。
具体的には、パイプライン処理開発、開発した処理のバージョン管理、開発・本番環境の切り分け、データリネージ、テスト、ドキュメント生成、スケジュール実行をdbtが担ってくれます。
正直検証する前は「Snowflake上でのTransformは、Snowflake単体でもある程度出来るから、データマートをがっつり構築するユーザー以外dbt不要では?」と思っていました。 なのですが、今の私は「Snowflake入れるなら、dbt必須じゃない?」と思うほどに良いツールだと感じています。
コンピューティングリソースの扱いが柔軟でELT処理に向いたアーキテクチャをしているSnowflakeとの相性もバッチリですので、Snowflakeを使用している方にはぜひ導入を検討して頂きたいツールです!!
- Snowflakeとdbtを併せて使うと何が良いのか?
- Snowflake×dbtを試してみた~Part1:基本設定編~
- Snowflake×dbtを試してみた~Part2:Project設定編~
- Snowflake×dbtを試してみた~Part3:パイプライン構築編その1~
- Snowflake×dbtを試してみた~Part4:パイプライン構築編その2~
- Snowflake×dbtを試してみた~Part5:テスト&Doc&デプロイ編~
- Snowflake×dbt特有の設定をまとめてみる
1人アドベントカレンダーを完走してみて
実施の背景
以下3点が背景としてありました。こんな状況だったので、「これならいっそのこと、1人でアドベントカレンダーやってみるか!」と思い立ち、始めた企画となります。
- 12月はちょうど案件の対応も減りそうだった。
- Snowflake、資格は取ったけどちゃんと自分で触れていないことが多いと感じていた。
- dbtを身につけたかった。
実施後の感想
まず一言。正直、大変でした。笑
クラスメソッドの中でも1人アドベントカレンダーを行う場合は、12月に入る前にブログストックをある程度用意していく方が多いのですが、私は思い立ったのが遅かったこともあり、11月30日時点でのストックは「2本」だけでした…
そのため、「毎日1本書かなければ…」というプレッシャーを感じつつ取り組んでいました。
…が、12月という事もあり急に業務が入ったり色々とありブログを1日1本書けない日が何度か続き、12月19日からの記事は決めていた時間に予約投稿できない事態となってしまいました。そのため19日以降はその日に記事を書いて投稿し、というサイクルでした。なんとか完走できて良かった、というのがホントに正直な感想です。
一方で、24本も記事を書いたことで得られたことも多くあります。
- Snowflakeに関して、知識がより深まった(特に自分で検証しないと動作がわかりづらい機能を試せたのが大きかったです。)
- dbtは今まで概要だけ知っていたレベルだったが、一通りのベース知識が身についた。
大変でしたが、やってよかったと感じた初の1人アドベントカレンダーでした。
やってみて嬉しかったこと
まず、Twitter等で反応を頂けたことがとても嬉しかったです。
自分の自己満足で済むだけでなく、実際に見て感想を言って頂けるのは本当に嬉しいものです。
また、TwitterでたくさんシェアしてくれたSnowflake社の本橋さん(@mmotohas)とお会いする機会があったのですが、コルク調のSnowflakeロゴシールという、日本で1枚しかないらしい貴重品を頂いてしまいました!!
どこにも貼らず、大切に保管しておこうと思います。笑
本橋さん、Twitterでのシェア含め本当にありがとうございます!!
最後に
私自身とても良い経験となりましたが、読んでくださっている皆様にとっても少しでも参考になる場面があると嬉しいです!
これからもSnowflakeを始め、データ分析関係の製品に関する記事をたくさん執筆していきますので、ぜひご覧ください。